#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/interrupt.h>

static struct tasklet_struct my_tasklet;

static void tasklet_handler (unsigned long data)
{
    printk(KERN_ALERT "tasklet_handler is running.\n");
}

static int __init hello_init (void)
{
    printk(KERN_ALERT "hello_init tasklet init.\n");
    
    tasklet_init(&my_tasklet, tasklet_handler, 0);
    tasklet_schedule(&my_tasklet);
    
    return 0;
}

static void __exit hello_exit (void)
{
    tasklet_kill(&my_tasklet);
    
    printk(KERN_ALERT "hello_exit tasklet exit\n");
}

MODULE_LICENSE("GPL");

module_init(hello_init);
module_exit(hello_exit);
    
